Digital recording and playback

ABSTRACT

Apparatus and corresponding methods for storing video information. The apparatus includes a means for receiving video information, a means for converting the received video information into digital video information, and a means for storing the digital video information. Converting the received video information into digital video information can include converting it into an MPEG-compatible digital format. The apparatus can include an MPEG-compatible digital encoder, which can include separate audio and video MPEG encoders. The digital video information can be stored on an electromagnetically writable disk drive with an optimized MPEG file system (OMFS) configured to receive the digital video information and store the digital video information on the disk drive, where the OMFS is configured to divide the received digital video information into one or more packets, each packet having the same number of bytes as a sector on a disk in the disk drive. The OMFS can first accumulate one of the packets of digital video information in a cache memory. The OMFS, upon filling the cache memory with a completed packet of digital video information, then stores the completed packet on a single one of the sectors of the disk drive.

BACKGROUND OF THE INVENTION

[0001] The present invention relates to digital recording and playbackof audio and video streams.

[0002] Conventional video cassette recorders (VCRs) record in analogform a video stream received from a video source (e.g., a cable TVcable) onto a tape (e.g., a VHS tape). One way to record a video streamusing a conventional VCR is to press a Record button, causing the VCR tobegin recording the incoming video stream. The VCR continues recordinguntil the user presses a Stop button. To schedule recording of a videostream (e.g., an upcoming episode of a television show), the usertypically indicates the start time, end time, and television channel ofthe episode. The VCR begins recording the video stream received on thespecified channel at the specified start time and stops recording at thespecified end time. To play back a video stream recorded with a VCR, theuser inserts the tape on which the video stream is recorded into theVCR, positions the tape to the beginning of the recorded video streamusing Rewind and Forward buttons, and presses a Play button. Typically,a user must wait until recording has completed before a video stream canbe played back.

[0003] A user who has access to live video sources such as a televisionantenna, a cable TV cable, or a Direct Broadcast Satellite (DBS) dish,and to recorded video sources such as a VCR or a camcorder, may connectthe outputs of one or more such video sources to a conventionalreceiver. The user also connects a video display such as a televisionmonitor to the receiver. The user can select which video source is to beoutput to the television monitor using controls provided by thereceiver. For example, to view the output of the VCR (e.g., the contentsof a VHS tape) on the television monitor, the user presses a “VCR”button on the receiver. To control the various video sources that areconnected to the receiver (e.g., to tune to a particular channel fromamong the channels received through the television antenna), the usertypically uses controls, such as remote controls, associated with thevarious video sources. Furthermore, each live television sourcetypically has its own set of channels with its own numbering system.Channel numbers used by different live television sources may or may notoverlap, and different video sources may or may not associate the samechannel number with another channel which contains the same content(e.g., channels which correspond to the same television network).

[0004] Some live television providers, such as DBS and some cablesystems, provide additional information within the video streams theyprovide. For example, some systems provide information about upcomingtelevision shows, such as the times at which they are scheduled to airand the channels on which they appear. Some systems display suchinformation using an on-screen menu that displays the times at whichupcoming shows will be aired.

SUMMARY OF THE INVENTION

[0005] In general, in one aspect, the invention features apparatus andcorresponding methods for storing video information. The apparatusincludes a means for receiving video information, a means for convertingthe received video information into digital video information, and ameans for storing the digital video information. Implementations of theinvention can include one or more of the following advantageousfeatures. Converting the received video information into digital videoinformation includes converting it into an MPEG-compatible digitalformat. The means for converting the received video information intodigital video information includes an MPEG-compatible digital encoder.The MPEG-compatible digital encoder includes separate audio and videoMPEG encoders. The means for storing the digital video informationincludes an electromagnetically writable disk drive, and an optimizedMPEG file system (OMFS) configured to receive the digital videoinformation and store the digital video information on the disk drive.The disk drive includes one or more electromagnetic disks, eachelectromagnetic disk divided into one or more sectors having a fixednumber of bytes storable on each sector; and the OMFS is configured todivide the received digital video information into one or more packets,each packet having the same number of bytes as a sector on a disk in thedisk drive. The OMFS first accumulates one of the packets of digitalvideo information in a cache memory. The OMFS, upon filling the cachememory with a completed packet of digital video information, then storesthe completed packet on a single one of the sectors of the disk drive.The means for converting the received video information into digitalvideo information includes an MPEG-compatible software encoder streamerwhich couples to the MPEG-compatible digital encoder to convert thereceived video information. The apparatus further includes a means forreading the stored the digital video information. The means for readingincludes an MPEG-compatible digital decoder. The MPEG-compatible digitaldecoder includes separate audio and video MPEG decoders. The means forreading includes an MPEG-compatible software decoder streamer whichcouples to the MPEG-compatible digital decoder to convert the storeddigital video information into video information suitable to bedisplayed on a television monitor. The OMFS is configured to defragmentthe disk drive periodically. The OMFS is configured to determineperiodically poor sectors on the disk drive and prevent writing to thepoor sectors.

[0006] Advantages of the invention may include one or more of thefollowing. A user can exercise centralized control over multiple videosources. For example, by merging the live television channels providedby multiple live television sources such as television antennas, cableTV cables, and DBS dishes, a user can navigate a single contiguous listof channels. This simplifies the user's television viewing experienceby, for example, allowing the user to select television channels using asingle remote control and reducing or eliminating any confusionregarding content received from different television stations using thesame channel number. More generally, the user is provided with theappearance of a single virtual video source, regardless of the number ofvideo sources (live or recorded) that are connected to a digital VCR.Interacting with multiple video sources through a single consistentinterface greatly simplifies the tasks performed by the user, such asrecording television shows and selecting channels to view.

[0007] A user can also exercise VCR-style control over live televisionshows. For example, if the incoming video stream is recorded into arewind buffer, the user can effectively “rewind” a live television showsimply by pressing a Rewind button. The live television show continuesto be recorded while it is being “rewound.” This allows the user tore-watch parts of a live television show before the show is over.Similarly, the user can pause a live television show by pressing a Pausebutton. Even while paused, the live television show continues to berecorded. This allows the user to pause a live television show toperform other activities, and then resume watching the remainder of thetelevision show even before the show is over. The ability to play backpart of a show while the show is being recorded can also allow a userwho sits down to watch a television show after it has begun beingrecorded to simply press the Play button to begin playing back the showfrom the beginning, even while the remainder of the show is still airingand being recorded.

[0008] A user can specify a show to record based on the content of theshow and information associated with the show, rather than merely on thetime at which the show airs and the channel on which it is received. Forexample, the user can specify that all episodes of a television showwith a particular title be recorded. Specifying shows to be recorded bycontent can simplify the process of recording shows because it does notrequire the user to know when a show will be aired, or on what channelit will air, or from which video source it will be received.Furthermore, recording by content can reduce the probability that a showof interest to the user will fail to be recorded. If, for example, theshow specified by the user is delayed or rescheduled, it can still berecorded. Recording by content also allows both new episodes of atelevision show broadcast on one channel and re-runs of the showbroadcast on a different channel to be recorded easily.

[0009] Also, show information can be stored along with each recordedshow. Such show information may include, for example, the name of theshow, the time at which it aired, the channel on which it aired, and adescription of the show. As a result, show information associated with ashow can be displayed on-screen when a user plays back a recorded show.Furthermore, recording show information along with recorded shows cansimplify the process of locating recorded shows. The user may, forexample, be provided with an informative list of shows that have beenrecorded from which a show to view may be selected. The user need notkeep an external record of which shows have been recorded and where theyare located. Furthermore, stored show information may be used inconjunction with channel guide information to allow recording only thoseepisodes of a television show which have not been previously recorded orwhich the user has not previously viewed.

[0010] Storage space can be managed efficiently by, for example,configuring the digital VCR to only retain in storage a certain numberof recorded episodes of a particular television show. When the maximumnumber of episodes of a television show have been recorded, recordedepisodes may be deleted from storage to make room for subsequentepisodes. This both increases the likelihood that sufficient storagespace will be available to record new shows, and relieves the user ofmanaging storage space.

[0011] Other features and advantages of the invention will becomeapparent from the following description and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[0012]FIG. 1 is a block diagram of a digital VCR and devices connectedto the digital VCR.

[0013]FIG. 2 is a block diagram of digital VCR circuitry.

[0014]FIG. 3 is a block diagram of digital VCR system software.

[0015]FIG. 4 is a block diagram of a digital VCR remote control.

[0016]FIG. 5 is a block diagram of a channel guide display.

[0017] FIGS. 6A-F are block diagrams of transitions between interfacestates.

DETAILED DESCRIPTION

[0018] Referring to FIG. 1, a digital VCR 10 acts as a central stationfor recording and playback of analog and digital audio and video. Livevideo sources, such as a cable TV cable 12, a broadcast televisionantenna 14, and a DBS dish 26, recorded video sources such as a videocassette recorder (VCR) 15, and audio sources such as a CD player 16 maybe connected to inputs of the digital VCR 10. A remote control 22 andon-screen menus displayed by the digital VCR 10 on the television 18 maybe used to select audio and video from one or more of the attached audioand video sources to be output to a single display device such as thetelevision 18. In this way, the user may control all connected audio andvideo devices using a simple, natural, and unified interface provided bythe digital VCR 10. For example, when viewing content that has beenpre-recorded externally, such as content recorded on a VHS tape,commands such as fast forward and rewind received from the digital VCR'sremote control 22 may be forwarded by the digital VCR 10 to the VCR 15.Alternatively, the remote control 22 can, for example, send commandssuch as fast forward and rewind directly to the VCR 15. In general, theuser issues all commands using the remote control 22, which eitherforwards the commands directly to the appropriate devices, or forwardsthe commands to the digital VCR 10, which in turn forwards the commandsto the appropriate devices.

[0019] The digital VCR 10 includes a modem 148 (FIG. 2) (RC336ACFA)which is connected to a telephone line 20 and which may be used to sendand receive information about upcoming television shows and otherinformation, as described in more detail below. The digital VCR 10 canbe controlled by keys on a front panel, by a remote control 22, or by anexternal device such as a personal computer 24.

[0020] Referring to FIG. 2, the digital VCR 10 includes circuitry 100.Video is input to the digital VCR 10 from one of a number of sources.Cable-ready input is received in analog form from cable TV cable 12 orfrom antenna 14 at one or more RF-in inputs 102. The RF-in input 102 iscoupled to a tuner 108 (Philips FI1236). If the RF-in input 102 isconnected to the output of a standard cable TV set-top box, whichoutputs a single channel on channel 3, for example, the tuner 108 istuned to channel 3. Otherwise, the tuner 108 can be adjusted to select achannel from among the channels present in the input received at theRF-in input 102. Composite video inputs 104 a-b receive composite videoinput from, e.g., a camcorder. An S-video input 106 receives S-videoinput from, e.g., the DBS dish 26.

[0021] The signals received at the video inputs 102, 104 a-b, and 106are input to a Micronas National Television Standards Committee (NTSC)decoder 109 (VPX3225). The decoder 109 selects which one of the signalsreceived at its inputs will be delivered at its output 110. The decoder109 digitizes the selected input and outputs the digitized signal at itsoutput 110 in CCIR (Comité Consultatif International desRadiocommunications) 601 format, with a typical resolution of 720×480pixels. The decoder 109 may be used to reduce the resolution of theinput signal by outputting a digitized signal with a smaller number ofpixels. The decoder 109 also includes a First In First Out (FIFO) bufferfor buffering video.

[0022] The digitized video signal output at the output 110 of thedecoder 109 is input to a Field Programmable Gate Array (FPGA) Blank andAutomatic Gain Control (AGC) Detector 112 and to a Sony Moving PicturesExperts Group 2 (MPEG-2) realtime video encoder 114 (CXD1922Q). TheMPEG-2 encoder 114 compresses the digitized video from output 110, andoutputs the compressed digitized video on its outputs 116, 118. TheMPEG-2 encoder 114 is capable of performing automatic scene detection,i.e., when the video on output 110 changes from one scene to another,the MPEG-2 decoder 114 resets itself and restarts compression at thebeginning of the new scene. The MPEG-2 decoder 114 also adjusts thenumber of bits of video that it compresses per second, based on how muchthe input signal is changing. In other words, as the amount of change inthe input signal increases, the number of bits per second in thecompressed output increases. This is referred to as variable bit ratecompression.

[0023] The FPGA 112 is programmed to detect blank frames in thedigitized video signal on output 110. Blank frame detection is used todetermine when commercials in a television signal begin and end. Forexample, the occurrence of multiple consecutive blank frames is apossible indication that a commercial is beginning or ending.Furthermore, if the video portion of the digitized video signal 110contains blank frames, but the corresponding audio portion of the signal110 is not silent, a commercial is most likely not occurring. Detectionof silent blank frames as representing the start (and end) ofcommercials can be further enhanced by determining if one such set ofsilent blank frames is followed some number of seconds (e.g., 30 or 60)by another such set of silent blank frames. The FPGA 112 contains a luma(brightness) threshold register whose value is set by a centralprocessing unit (CPU) 140. The FPGA 112 also contains a counterregister. As each video frame is read by the FPGA 112, the FPGA 112stores in the counter register a count of the number of pixels in thevideo frame whose intensity value is below the value of the lumathreshold register. The CPU can read that count, and determine if thevalue of the counter register is below a predetermined minimum valueafter a predetermined number of frames, such that a commercial isdetermined to have begun.

[0024] Some video streams are specially encoded using Macrovision's copyprotection scheme in a way that allows the video stream to be displayedcorrectly on a television, but which causes massive signal degradationif the video stream is recorded onto a video tape. Such encoded videostreams can come from a pre-recorded video tape, a laser disc, a DVD(Digital Video (or Versatile) Disk), or from a broadcast such as apremium cable channel or a pay-per-view movie. The FPGA 112 is used todetect the presence of Macrovision copy protection in the signal onoutput 110. If Macrovision copy protection is detected, then the signalis tagged to indicate that it is copy protected. When a data stream isread from storage (e.g., to play back a recorded television show), copyprotection is added to the data stream using the NTSC encoder 304 (FIG.3) if the data stream is tagged.

[0025] Audio input is received either through the tuner 108, throughline 1 inputs 120 a-b, or through line 2 inputs 122 a-b. All receivedaudio signals are input to a Micronas Audio Codec(compressor/decompressor) 124 (MSP3430G). The codec 124 selects theoutput of the tuner 108, the line 1 inputs 120 a-b, or the line 2 inputs122 a-b. The codec 124 digitizes the selected audio signal(s). If theoutput of the tuner 108 is selected, the codec 124 also performs “stereodecoding,” i.e., separates the right and left channel of the audiosignal.

[0026] The resulting digitized audio signal is output on line 126, whereit is input to an Analog Devices Digital Signal Processor (DSP) 128(ADSP2185). The DSP 128 compresses the received digitized audio signalusing MPEG-1, layer 2 compression.

[0027] An IR (infrared) microcontroller 130 (SX18AC/DP) sends andreceives infrared signals to and from devices such as a televisionremote control or a set-top cable box. The IR microcontroller transmitsinfrared signals using an IR transmitter 132, and receives infraredsignals using an IR detector 134. The IR microcontroller also detectswhen the user has pressed an On/Off button 136. The On/Off button 136toggles the digital VCR 10 between “on” mode and “sleep” mode. When in“on” mode, the digital VCR 10 is fully functional. When in “sleep” mode,the digital VCR 10 can perform just a subset of its functions and canconsume less power than when in “on” mode. When in “sleep” mode,however, the digital VCR 10 still performs such functions as recordingscheduled shows and downloading channel guide information. Furthermore,when the On/Off button 136 is pressed, the IR microcontroller 130 teststhe CPU 140 to determine if the system software running on the CPU 140has crashed. If the system software has crashed, the IR microcontroller130 resets the CPU. IR microcontroller 130 can also output IR encodedsignals via S-link output 131.

[0028] The central processing unit (CPU) 140 (one can use a Philips CPUadapted to function with Philips MPEG-2 decoder SAA7201H, describedfurther below, or another suitable CPU) controls various operations ofthe digital VCR 10. CPU 140 runs application programs, controlsstreaming of audio and video, selects the states input select switchesin FPGA 112 and the codec 124, and performs other functions, asdescribed in more detail below. The digitized audio output by the DSP128 and the digitized audio output by the MPEG-2 encoder 114 are storedon a hard disk drive 142. The hard disk drive 142 uses a file systemthat is described in more detail below.

[0029] Serial ports 144 a-b receive and send serial data according tothe RS-232 standard. Although as shown in FIG. 2 the serial ports 144a-b connect to external devices using DB-9 connectors 146 a-b, otherappropriate connectors can be used. The serial ports 144 a-b can beused, for example, to control a DBS receiver. A device such as personalcomputer 24 can be connected to the digital VCR 10 through the serialports 144 a-b to control the digital VCR 10. The modem 148 connects tothe telephone line 20 (FIG. 1) through a Data Access Arrangement (DAA)149 and a telephone jack. The modem 148 can be used, for example, todownload channel guide information. Channel guide information can alsobe contained within the vertical blanking interval (VBI) of the videoinput signal, or received through a broadcast pager network. If thedigital VCR 10 is connected to a DBS receiver, channel guide informationcan be obtained from the received DBS signal.

[0030] A FireWire link layer 150 (PDI1394L11), FireWire physical layer152 (PDI1394P11), and FireWire ports 154 a-b allow the digital VCR 10 tosend and receive digital video according to the IEEE 1394 standard.Additional hard disk drives can be connected to the digital VCR 10through the ports 154 a-b to provide additional storage capacity. Theports 154 a-b can also be used to connect the digital VCR 10 to anotherdigital VCR. If two digital VCRs are connected to each other via ports154 a-b, the two digital VCRs can recognize each other's presence. Onedigital VCR recognizes itself as the “master” and is connected to thetelevision 18, and the other digital VCR recognizes itself as the“slave.” The “slave” ignores all IR commands intended for the “master.”The two digital VCRs present a single unified interface to the user,effectively allowing the user to use the two digital VCRs as if theywere a single digital VCR with two tuners and the combined disk space ofthe two individual digital VCRs. When the two digital VCRs aredisconnected from each other, they revert to their regular functioningand operate independently. High-definition television (HDTV) signals canalso be sent and received through the ports 154 a-b.

[0031] Audio and video output are transmitted over a high-speed bus to aPhilips MPEG-2 decoder 156 (SAA7201H). The decoder 156 receives acombination of audio and video referred to as a “program stream” fromthe CPU 140. The decoder 156 decompresses the program stream, sends thedecompressed audio to an audio digital-to-analog converter (DAC) 158(TDA1311) and to a Philips NTSC (and PAL) encoder 157 (SAA7120) whichthen sends the decompressed and now re-encoded video on a Y line 160 aand a C line 160 b to a video filter 162 (ML6428), which filters thedecompressed re-encoded video to improve its quality. The decoder 156also sends digitized decompressed audio in Sony Philips DigitalInterface (SPDIF) format (represented by block 159) to a SPDIF outputport 161.

[0032] Analog audio signals are output by the audio DAC 158 to line 1out ports 164 a-b and line 2 out ports 166 a-b. Filtered video signalsare output to composite video outputs 168 a-b and to S-Video output 170.A Boot read-only memory (ROM) 172 contains startup object code thatbegins executing when the digital VCR 10 is turned on. The code in theBoot ROM causes the digital VCR 10 to load system software object codefrom the hard disk drive 142 into a DRAM 174 and to execute that code,causing the digital VCR 10 to begin normal operation. The DRAM 174 alsostores temporary data used by the system software. SDRAMs 176 a and 176b are used by the MPEG encoder 114 and the MPEG decoder 156 to storedata as it is being compressed and decompressed, respectively.

[0033] Referring to FIG. 3, the digital VCR 10 is controlled by systemsoftware 300. Kernel 310 is an operating system or a part of anoperating system that can reside in the Boot ROM 172 and which is usedto control basic functions of the digital VCR 10 system software 300.Kernel 310 is based upon the MQX kernel produced by Precise Technology.Kernel 310 supports such features as preemptive multitasking, messagepassing, interrupt handling, list management, and dynamic link library(DLL) handling.

[0034] In general, the device drivers (i.e., the I²C driver 312, the IRdriver 314, the serial port driver 352, the modem driver 353, theFireWire driver 344, the IDE driver 348, the MPEG encoder driver 336,and the MPEG decoder driver 338) are responsible for communicating withand directly controlling the hardware components of the digital VCR 10.The device drivers isolate the components of the system software 300from the particular hardware devices used to implement the digital VCR10 so that the system software 300 need not be modified if differenthardware components are used.

[0035] The I²C bus 360 is a 2-wire bus (comprising wires 141 a and 141b) that connects the IR subsystem 302, the tuner 108, the NTSC decoder109, and the NTSC encoder 304 together. The I²C driver 312 providesarbitration to the bus 360 for communicating with these devices.

[0036] The IR driver 314 is responsible for reading data from the IRdetector 134, and for sending infrared signals to other components usingthe IR transmitter 132. For example, the IR driver 314 convertbitstreams received through the I²C driver 312 into informationdescribing which keys (if any) have been pressed on the remote control22.

[0037] The IR data interpreter 320 receives a raw bitstream of IR datafrom the IR driver 314 and converts the bitstream into meaningfulkeypress values. It also receives outgoing device control information(i.e., information about commands to control external devices) andconverts the device control information into a bitstream that is outputto the IR transmitter 132 through the IR driver 314.

[0038] IR subsystem 302 includes the IR transmitter 132 and IR detector134 (FIG. 2). The IR subsystem 302 receives information from andtransmits information to I²C driver 312 which handles I²C buses 0 and 1(141 a and 141 b). IR driver 314 receives bitstreams representingkeypresses on the remote control 22 from the I²C driver 312.

[0039] An IR data interpreter 320 uses bitstreams from the IR driver 314to determine which keys (if any) on the remote control 22 have beenpressed, and converts commands for controlling external hardware into IRbitstreams.

[0040] An NTSC encoder 304 encodes outgoing video signals in NTSCformat. In FIG. 2, the NTSC encoding function is performed by thecombination of the MPEG-2 decoder 156 and the video filter 162. AVideoSrc DLL 316 uses the I²C driver 312 to control the NTSC decoder 109and the NTSC encoder 304, and to tune the tuner 108 to desired channels.

[0041] A VBI driver 318 receives information encoded within the VBIreceived from video driver 316, and VBI data interpreter 322 decodes andinterprets that data as necessary.

[0042] A video input select module 328 selects what video source (e.g.,broadcast, cable, conventional VCR, etc.) is currently being used bydigital VCR application 330. Video input select 328 coordinates thisselection with command I/O interpreter 324, and video driver 316.

[0043] The command I/O interpreter 324 receives keypress informationfrom the remote control 22, and sends key commands to be output to theIR transmitter 132. The command input/output interpreter 324 receivesuser commands such as keypresses from the application 330.

[0044] The serial port driver 352 interacts with the serial portsubsystem 308. A serial port subsystem 308 includes RS-232 serial ports144 a-b and DB-9 connectors 146 a-b. A debug I/F module 354 sends andreceives raw bitstreams to and from a serial port driver 352, whichinterfaces with the serial port subsystem 308. If the serial portsubsystem 308 includes multiple serial ports, as shown in FIG. 2, theserial port driver 352 interacts with each of the serial portsindividually. The serial port subsystem 308 can be used, for example, tocontrol a Digital Satellite System (DSS), or to communicate with thepersonal computer 24, external input devices such as a keyboard, or asecond digital VCR in a master/host relationship.

[0045] A modem driver 353 is responsible for setting up connections withthe modem 148, sending and receiving data to and from the serial portdriver 352, handling data error detection, correction, orretransmission, and transfer protocols. If the modem 148 is configuredto receive incoming calls, then the modem driver 353 decides if theincoming call is directed to the digital VCR 10.

[0046] Digital VCR application 330 forwards commands received from theuser such as keypresses to a command input/output interpreter 324. Thedigital VCR application 330 obtains channel guide information receivedusing the modem 148. The digital VCR application 330 uses a 2D graphicsDLL (Dynamic Link Library) 334 to draw text and graphics on thetelevision screen. The 2D graphics DLL 334 passes rectangular regions ofmemory containing rendered images to an MPEG decoder driver 338 todisplay the rendered rectangular regions.

[0047] A beep DLL 358 configures the beep section of the MPEG decoderdriver 338. The beep DLL 358 is used to make audible “ping” sounds inresponse to user actions. The digital VCR application 330 sends commandsrelated to recording named content streams to an MPEG encoder streamer332, which in turn communicates with an optimized MPEG file system(OMFS) 350 (explained in greater detail below). The digital VCRapplication 330 sends VCR-style commands such as play, stop, and rewindto an MPEG decoder streamer 342.

[0048] Firewire subsystem 306 includes FireWire Link Layer 150, FireWirePhysical layer 152, and FireWire ports 154 a-b. A FireWire Driver 344passes a raw bitstream, received from the FireWire subsystem 306, to aFireWire stack 346. Furthermore, the FireWire subsystem 306 can be usedto connect multiple digital VCRs together. FireWire Stack 346 cancommunicate with a DVD file system 356 for retrieving and managinginformation received from a DVD player, and which can store DVD files onhard drive 142 through IDE driver 348.

[0049] The FireWire (IEEE 1394) subsystem 306 includes a high speedserial bus designed to transmit digital audio and video data. TheFireWire subsystem 306 can transmit between 100 and 400 millionbits-per-second (Mbps), depending on the particular configuration. TheFireWire subsystem 306 can be used, for example, to transfer data to andfrom a PC or a DVD, or to connect the digital VCR 10 to a second digitalVCR in a master/slave relationship. Such a combination of two digitalVCRs can effectively provide the user with two tuners, a single filesystem, and two or more hard disk drives or DVDs.

[0050] The IDE driver 348 controls the hard disk drive 142. For example,the IDE driver 348 is responsible for generating commands to control thehard disk drive 142, such as reading or writing disk sectors, formattingthe disk, performing diagnostics, or returning status information.

[0051] The digital VCR application 330 reads and writes from files onthe hard disk drive 142 using the OMFS 350. The digital VCR application330 optionally performs DVD-related functions (e.g., reading informationfrom a DVD) using the file system 350. The OMFS 350 instructs the IDEdriver 348 to read and write blocks of data to and from the IDE harddisk drive 142. The OMFS 350 instructs the IDE driver 348 to read blocksof data from a DVD. Other peripheral standards can be employed for diskdrive access, such as SCSI instead of IDE.

[0052] An asynchronous file system (AFS) 351 operates in conjunctionwith the OMFS 350 to allow asynchronous access to files stored on thehard disk drive 142. For example, immediately after the streamers 332,342 make a request to the asynchronous file system 351 to perform a filefunction (e.g., read or write), control returns to the streamers,allowing them to continue streaming. When the requested file function iscomplete, the asynchronous file system 351 notifies the requestingstreamer. This allows the streamers 332, 342 to perform other functionswhile the asynchronous file system 351 is performing file-relatedoperations.

[0053] An MPEG encoder streamer 332 writes MPEG-encoded data to the OMFS350. An MPEG decoder streamer 342 reads MPEG-encoded data from the OMFS350, and reads MPEG-encoded DVD data from the file system 350. Theencoder streamer 332 and decoder streamer 342 are described in moredetail below.

[0054] The MPEG decoder driver 338 controls the MPEG decoder 156, whichproduces an NTSC or PAL video signal from digital video data. The MPEGdecoder driver 338 also controls the audio DAC 158 to produce outgoingaudio.

[0055] The MPEG encoder driver 336 controls the MPEG encoder 114, whichencodes the digital video data from the Micronas NTSC decoder 110 intoan MPEG-2 video stream. The encoder 114 can support the MacroVision copyprotection scheme, as described above.

[0056] The digital VCR 10 uses the OMFS 350 to read and write files fromthe hard disk drive 142. Such files include MPEG audio and videostreams, preference files, and files containing channel guideinformation. The OMFS 350 minimizes disk fragmentation by efficientlystreaming MPEG data to and from the hard disk drive 142.

[0057] The hard disk drive 142 includes a number of disks, also referredto as platters, that spin together. Each platter has one read/write headfor each surface that is being used. Each surface has a number ofconcentric tracks that are grouped together in a number of zones, andeach zone is divided into a number of sectors per track. Each sectorstores a fixed number of bytes of information (e.g., 512 bytes). Forexample, the 4.3 Gb Quantum Fireball ST drive has 6 surfaces, 15 zones,and 7066 tracks per surface. The inside zone has 143 sectors per track,and the outside zone has 239 sectors per track.

[0058] The files stored on the hard disk drive 142 include MPEG programstreams, database files, preferences files, and program code files. TheMPEG program streams can contain recorded broadcast data, stored asMPEG-2 Program System Streams, with video and audio PacketisedElementary Streams (PES) multiplexed together. Preferences files cancontain data describing the way in which the user has configured thesystem, such as the preferred encoding bit rate, favorite channels, andpersonal channels. Program code files contain binary code forapplications, system modules, DLLs, etc. The OMFS 350 supports filenamesthat are long enough to provide differentiation between files, e.g., 16characters.

[0059] The OMFS 350 can use “circular” files to store one or more rewindbuffers. Such files are allocated a fixed amount of contiguous diskspace upon their creation. Information is written to such a filecontiguously starting from the beginning of the allocated block of diskspace. When the end of the block is reached, writing resumes at thebeginning of the block. Alternatively, the OMFS 350 can store the rewindbuffer in a non-circular file that is allocated a fixed amount ofcontiguous space (e.g., enough space to hold 15 minutes of video), butwhich allows that contiguous space to vary across the disk. Data iswritten to the file until the allocated amount of space is used up, atwhich point data continues to be written to further areas dynamicallyassigned to the file, while data is deleted from the beginning of thefile (and that area is dynamically de-assigned). With either method, asan example, after 20 minutes of recording a show into the rewind buffer,the rewind buffer would contain a file which contains 15 minutes ofcontiguous data corresponding to minutes 5 through 20 of the show.

[0060] The file system 350 pre-allocates space on the hard disk drive142 for files when the files are created. Contiguous blocks of space areallocated if at all possible. For example, if the digital VCR 10 isabout to record a 30-minute television show, the file system 350 createsa new file and allocates sufficient space on the hard disk drive 142 tostore 30 minutes of video. This allows data to be streamed to the harddisk drive 142 contiguously and without the need to allocate additionalspace for the file as the show is being recorded.

[0061] Some files, such as MPEG audio and video files, can be deleted,while other files, such as preferences files and program code files,cannot be deleted. Each file stored on the hard disk drive 142 has anattribute field associated with it which indicates whether the file canbe deleted and whether the file is read-only.

[0062] If errors occur in MPEG files on the hard disk drive 142, theMPEG decoder 342 either hides or recovers from the errors. In order tohide the effects of disk errors, duplicate copies of important files(such as program code files) are stored on the hard disk drive 142. Ifthe OMFS 350 notices that a file has become corrupt, the system software300 can use the duplicate copy of the file. Furthermore, the OMFS 350can recognize bad sectors on the hard disk drive 142 and marks thosesectors so that they are not used in the future.

[0063] The amount of movement of the hard disk drive's read/write headis reduced in order to reduce seek time from the hard disk drive 142.One way to reduce read/write head movement is to use file caches. Datathat is being written by the MPEG encoder 114 is stored in a cachebefore being written to the hard disk drive. If this data is needed bythe MPEG decoder 156 shortly after it has been written to the cache, thedata can be read from the cache instead of from the hard disk drive 142.

[0064] Other aspects of the OMFS 350 are as follows. Each MPEG PESpacket contains the same number of bytes as a sector on the hard diskdrive 142 (e.g., 512 bytes). This allows the MPEG streamers 332 and 342to read and write whole sectors at a time. The sectors on a single trackof the hard disk drive 142 can only be used to store data from a singlefile. This can simplify allocation of sectors to files, because itallows the OMFS 350 to allocate multiple sectors at a time to a file. Asdata is written to the OMFS 350 by the MPEG Encoder subsystem 114, eachPES packet is marked with its position in the MPEG file before the datais sent to the IDE driver 348. This allows the OMFS 350 to determinewhether a packet being requested can be retrieved from a cache ratherthan from the hard disk drive 142.

[0065] The OMFS 350 uses n caches, where each cache has enough space tostore an entire disk sector (PES packet). The value n is calculated suchthat when the digital VCR 10 is simultaneously recording and playingback the same file, the sector requested by the MPEG decoder subsystem156 is cached and is ready to be written to the hard disk drive 142, butis not yet written.

[0066] As the hard disk drive 142 becomes full, it may not be possibleto store files on contiguous disk tracks because the file may not fit inany of the available contiguous blocks. This is referred to asfragmentation. The OMFS 350 uses a defragmentation application todefragment the hard disk drive 142 periodically (e.g., each night at atime when the digital VCR 10 is typically not in use, or when a file isdeleted). The defragmentation application can be part of the OMFS 350 orbe a separate application that communicates with the OMFS 350.

[0067] If two or more digital VCRs are connected to each other (using,e.g., the FireWire subsystem 506), one digital VCR is considered the“master” unit and the other unit is considered the “slave” unit.Consider the situation where the slave unit is recording a live showwhile the master unit is being used to watch (and also record) a livetelevision show on another channel. If the hard disk drive of the masterunit is full, but there is space available on the slave's hard diskdrive, then the master unit stores the video stream from its currentchannel onto the slave's hard disk drive.

[0068] The digital VCR 10 can receive user commands from a number ofdifferent sources. Possible sources of user input include the IRdetector 134 (for receiving remote control keypresses), the modem 148(for, e.g., receiving commands to record a television show), a pager(for, e.g., receiving commands to record a television show), a universalserial bus (for receiving input from a keyboard or mouse), or amicrophone (for receiving voice commands). All user commands are routedthrough the command input/output interpreter 324. In this way, thedigital VCR application 330 receives a single command input streamregardless of the input devices from which the inputs originate.Similarly, the all commands output by the digital VCR 10 to externaldevices, such as a cable TV set-top box or the personal computer 24, areoutput through the command input/output interpreter 324, which forwardsthe command to the appropriate external devices in a suitable format.

[0069] The 2D graphics DLL 334 produces graphics overlays to displayon-screen user interface elements such as the channel guide display 500.The MPEG decoder 109 is capable of overlaying a 2D image on top of theunderlying MPEG video, using 2, 4, or 8 bits per pixel.

[0070] The digital VCR 10 includes a realtime clock that keeps thecurrent time of day and the current date. The realtime clock is used todisplay the current time to the user and to determine when a scheduledshow is to be recorded. The realtime clock can be set by the user or beset automatically by reading data from line 21 of the VBI signal (viaVBI data interpreter 322 and VBI driver 318) or by downloading timeinformation from a server using, e.g., the modem 148.

[0071] The “MPEG subsystem” refers to the MPEG encoder streamer 332, theMPEG decoder streamer 342, the MPEG decoder driver 338, and the MPEGaudio/video decoder device drivers 336 a-b. Each of these components ofthe MPEG subsystem runs as a separate thread. This allows the MPEGsubsystem to take advantage of features such thread prioritization. Forexample, the threads allow multiple data streaming activities (such asrecording and playback) to be interwoven and to appear to the user to beoccurring simultaneously.

[0072] The MPEG encoder 114 and MPEG decoder 156 encode and compressaudio and video data, multiplex the compressed data together, save themultiplexed data stream to the hard drive 142, and simultaneously loadanother multiplexed data stream from the hard disk drive 142,demultiplex it, and decompress and display the audio and video datacontained in it.

[0073] The streamers 332 and 342 provide an abstract interface to theencoder 114 and decoder 156, respectively. As a result, if the encoder114 and/or decoder 156 are replaced with other devices, only the drivers336 and 338 need be modified or replaced while the rest of the systemsoftware 300 remains intact.

[0074] The MPEG encoder subsystem includes the encoder streamer 332, thevideo encoder device driver, and the audio encoder device driver, eachof which run as separate threads. The MPEG encoder subsystem controlsthe MPEG encoder 114 to encode the incoming broadcast signal,encapsulate the video and audio data into an MPEG-2 program stream, andsave the program stream to the hard disk drive 142, without losing anydata. The two device drivers are responsible for initializing thehardware, enabling direct memory access (DMA) transfers from thehardware into RAM buffers, handling errors, and handling interrupts. Theencoder streamer 332 is responsible for ensuring that the device drivershave sufficient buffer space into which the hardware can write theencoded data, packetising the elementary streams from the encoders,multiplexing the audio and video PES data together, capturing data fromthe VBI, and writing data to the OMFS 350. The components of the MPEGencoder subsystem respond to external commands to stop and startrecording, change the recording bit rate, change the encodingresolution, save the current stream position as a bookmark, and respondto other user actions.

[0075] The MPEG encoder driver 336 (1) performs hardware initialization,such as setting up the encoder 114 to handle the input data resolutionand timing, and setting encoding parameters such as bit rate, (2)performs interrupt handling, (3) controls DMA transfers, used totransfer encoded data from the encoder 114 into RAM buffers, and (4)inserts data into the user-data part of the PES header. The MPEG encoderstreamer 332 ensures that the two device drivers 336 and 338 havesufficient buffer space so that the encoder stream does not stall. TheMPEG encoder streamer 332 also acts as an interface to the digital VCRapplication 330 to control encoding parameters and actions.

[0076] The “MPEG decoder subsystem” refers to the decoder streamer 342and the MPEG decoder driver 338, each of which runs as a separatethread. The decoder subsystem controls the MPEG decoder 156 to decodeencoded MPEG data and to display the resulting video frames synchronizedto the decoded audio, without dropping any video frames. The rate ofdecompression and display is managed by the decoder 156, which decodesboth audio and video MPEG data, and synchronize the video to the audio.Therefore, the decoder 156 synchronizes the video and audio usingPresentation Time Stamp (PTS) values present in the video and audiostreams. As data buffers are emptied by the decoder 156, they are passedback up to the decoder streamer 342 in order to be refilled from thedata stored on the hard disk drive 142.

[0077] The decoder driver 338 is responsible for initializing thehardware, enabling DMA transfers to the hardware from RAM buffers,handling errors, and handling interrupts. The decoder streamer 342 isresponsible for ensuring that the device driver 338 is provided withdata when necessary, which involves reading the data from the hard diskdrive 142, parsing PES packets to determine if the data is audio orvideo, extracting extra information (such as Closed Captioning) from thevideo packets, and sending the data to the decoder driver 338.

[0078] The components of the MPEG decoder subsystem respond to externalcommands to control the decoder 156, such as VCR-style commands to stop,start, pause, forward, reverse, and jump to random positions in thevideo stream. When paused, the decoder streamer 342 instructs the MPEGdecoder driver 338 to stop decoding. As a result, the MPEG decoderdriver 338 instructs the MPEG decoder 156 to stop decoding. When theMPEG decoder 156 stops decoding, the data that has been read from thehard disk drive 142 will be queued by the MPEG decoder driver 338 to theMPEG decoder 156, and the empty buffers that have been queued to theOMFS will be filled. When fast forwarding, the MPEG decoder streamer 342instructs the MPEG decoder 156 to decode and display every n frames,where n is greater than 1.

[0079] MPEG video contains “I” frames, “B” frames, and “P” frames. An Iframe contains data descriptive of a complete frame of video. An I frameis followed by a number of B frames and P frames. Information in the Bframes and P frames is used to modify the preceding I frame to generatesubsequent frames. To rewind, the MPEG decoder 156 is instructed to stopdecoding, all of the data queued to the decoder 156 is flushed, and thedecoder 156 is put into I-frame only mode (in which it decodes only Iframes, skipping all B and P frames). The decoder streamer 342 and MPEGdecoder driver 338 flush all of their buffers. The decoder streamer 342then starts seeking backwards in the video stream until it identifiesthe beginning of the previous I frame. When the previous I frame isfound, the decoder streamer 342 streams forward again, as in play mode,to show at least one complete I frame to the viewer, until it finds thenext non-I frame, at which point it starts searching backwards again,past the last found I frame, to the next prior I frame. This proceduresynthesizes an I frame by I frame rewind with MPEG data.

[0080] Before describing the user operation of the digital VCR, severalterms need to be introduced. The “current time” is the time on thedigital VCR's internal clock, reflecting the actual time. The “currentchannel” refers to the channel to which the digital VCR 10 is currentlytuned. The current channel can be a live television channel or arecorded channel, as described below. If the current channel is a livetelevision channel, the “current show” is the television show beingplayed on the current channel at the current time.

[0081] Referring to FIG. 4, the remote control 22 includes, for example,the following buttons. A Power button 400 toggles the digital VCR 10between “on” mode and “sleep” mode, as described with respect to theOn/Off button 136 described above.

[0082] A TV Power button 401 turns the television 18 on and off. ARewind button 402, Play button 404, Fast Forward button 406, Recordbutton 408, Pause button 410, and Live TV (Stop) button 412, performVCR-like functions on live television channels and recorded televisionshows, as described in more detail below. An Ad Skip button 414 skips tothe end of a commercial when a recorded video stream is being played. AnInstant Replay button 416 rewinds the currently playing video stream bya predetermined amount and then resumes playing. A Channel Up button 418and a Channel Down button 420 change digital VCR channels, as describedbelow. The user can also tune to a channel by entering the channelnumber using numeric keys 422-238 and pressing an Enter button 440. AVolume Up button 442 and a Volume Down button 444 can increase anddecrease the volume of the digital VCR's audio output, or can increaseand decrease the audio volume of the television 18 directly. A Mutebutton 446 temporarily suspends audio output from the digital VCR 10.Cursor keys 460-466 are used to navigate through on-screen menus, asdescribed below. A Menu button 452 displays a main menu from whichsub-menus can be selected. A Guide button 450 causes a channel guidedisplay to be displayed on screen, and a Display button 448 causes anon-screen display to be displayed on-screen, as described below. ASelect button 256 is used to select choices in on-screen menus, asdescribed below. A Replay Guide button 454 causes a replay menu to bedisplayed on-screen. Alternatively, the replay menu can be displayed bypressing the Play button 404 while a show is playing. A Cancel button458 is used to remove menus from the screen and to cancel choices madeby the user.

[0083] Channels on a television correspond to channels that arebroadcast by television networks. A “digital VCR channel,” in contrast,can correspond to any video stream. A digital VCR channel can correspondto, for example, a traditional television channel (i.e., a broadcastVHF/UHF channel), a pay-per-view broadcast, a video stream from arecorded video source such as a VCR, or a video stream recorded by thedigital VCR 10 on the hard disk drive 142. The digital VCR 10 maintainsa single channel list. Each channel in the channel list has a uniquechannel number and corresponds either to a live television channel or torecorded content. Channel numbers can, for example, be four-digitnumbers, the first digit of which indicates the source of the channel.For example, channels 1000 through 1999 can correspond to cabletelevision channels, channels 2000 through 2999 can correspond to DBSchannels. Channels corresponding to content that has been recorded usingthe digital VCR 10 on the hard disk drive 142, referred to as “PersonalChannels,” can correspond to channel numbers 3000 through 3999. Thisarrangement provides the user with a single list of channels regardlessof the number of video sources to which the digital VCR 10 is connected.Alternatively, one channel list can correspond to channels received fromlive television sources, and a second channel list can correspond topersonal channels.

[0084] A channel guide database 326 stores information about channelsand the video streams associated with them. For example, the channelguide database contains information about upcoming television shows thatare scheduled to be broadcast on live television channels.

[0085] Channel guide information for channels from live video sources,such as cable TV channels and DBS channels, can be downloadedperiodically from the cable TV or DBS provider, or from an onlineservice using the modem 148. Some television stations broadcast programinformation in the VBI signal using, for example, extended data service(XDS). For such stations, channel guide information need not beseparately downloaded, since the channel guide information can bederived from the VBI. The channel guide database can be stored on thehard disk drive 142, in dynamic RAM (DRAM) 174, or on other suitablecomputer-readable media.

[0086] For each live television channel, the channel guide databaseincludes program listings describing the shows that will be playing onthe channel. The channel guide database can contain information abouteach show, such as the title of the show, the show's start time and endtime, descriptions of topics to which the show relates, and otherinformation such as the names of actors who appear in the show.

[0087] Referring to FIG. 5, a channel guide display 500 presents theuser with a visual representation of information contained in thechannel guide database and of content recorded in personal channels. Theinformation about content recorded about personal channels that isdisplayed by the channel guide display 500 is derived from the showinformation that is recorded in the personal channels. The user causesthe channel guide display 500 to appear on the screen by pressing theGuide button 450 on the remote control 22. The channel guide display 500can be transparently or opaquely displayed over the video of the currentchannel, while the audio of the current channel is still playing. Achannel list display 502 displays the channel numbers and names of asubset of the channels in the channel list, including live televisionchannels, channels corresponding to recorded video sources, and personalchannels. A show display 504 presents a list of television shows thatare scheduled to air on live television channels and shows that havebeen recorded on recorded channels. For example, the channel guidedisplay 500 indicates that channel number 1003 corresponds to the TurnerBroadcasting System (TBS), which is a live television channel. Anepisode of “Scooby Doo” is playing on TBS from 8:30 pm until 9:00 pm,and an episode of “Car Crashes” is playing on TBS from 9:00 pm until9:30 pm. Channel number 1009 corresponds to content recorded on the VCR15. To play back a tape in the VCR 15, the user selects channel 1009 andpresses the Play button 404 on the remote control 22. The digital VCR 10selects the VCR 15 as the current video source and forwards the playcommand to the VCR 15. The play command can be forwarded to the VCR 15using, for example, the IR transmit 132 or FireWire ports 154 a-b tosend a signal to the VCR 15. Channel 1010 corresponds to a personalchannel named “Finance,” which will be described in more detail below.

[0088] When the channel guide display 500 appears on the screen, thechannel list display can be centered around the current channel, or thecurrent channel can be at the top of the channel guide display 500. Theuser can scroll through the channel guide display 500 using cursor keyson the remote control 22 in order to view channel guide information forother channels or to view show information for other times. The user canuse the cursor buttons 460-466 on the remote control 22 to highlightshows. Highlighting a show can cause additional information about theshow to be displayed in an on-screen display 508. For example, as shownin FIG. 5, an episode of “Scooby Doo” has been highlighted. As a result,the on-screen display 508 displays information about the highlightedepisode, such as its title, duration, start and end times, a briefdescription, and the network on which it is being broadcast. If thedigital VCR 10 is displaying part of a television show while thetelevision show is being recorded, the on-screen display 508 alsocontains information about the relation of the content being displayedto the current time. For example, the on-screen display 508 can indicatethat the content being displayed is five minutes behind the current timeor in sync with the current time.

[0089] The channel guide display 500 also contains additionalinformation such as the current time 510 and a filter bar 512 whichdisplays filtering information. Filtering information can include, forexample, a television show title, an actor's name, or a keyword. If, forexample, the user specifies as filtering information that the user isonly interested in watching recorded shows with the word “sports” intheir titles, the filter bar 512 displays the word “sports” and thedigital VCR 10 replays only recorded content with a title containing theword “sports.” If the user has not specified any filtering information,the filter bar can, for example, be empty or display the word“Channels,” and the digital VCR 10 displays all content on the currentchannel. Other information, such as the video source from which channelsoriginate, can also be displayed by the channel guide display 500.

[0090] Although the channel guide display 500 initially shows channelsin the channel list display 502 in sequential order, and displays showsin the show list display 504 in chronological order, channels and showscan be arranged in other ways. For example, shows can be sorted bycategory, or the user's favorite channels can be grouped together. Showssharing category information can be displayed using the same color. Thechannel number that is associated with a channel can be changed usingthe channel guide display 500 by highlighting the current channel numberin the channel list display 502 using the cursor buttons 460-466,pressing an appropriate button on the remote control 22, and followingon-screen prompts for changing the channel number. The user can alsocreate a list of “favorite channels” which can be grouped together inthe channel guide display 500 and can be navigated sequentially usingthe remote control's Channel Up button 418 and Channel Down button 420.

[0091] While the channel guide display 500 is on the screen, the usercan (1) highlight a show in the show display list 504 using the cursorbuttons 460-466 and press the Select button 256 on the remote control22, causing the tuner 108 to tune to the selected show and the selectedshow to be displayed on the screen; (2) highlight an upcoming show anddisplay its show information in the on-screen display 508; (3) select achannel from the channel list display 502, causing the tuner 108 to tuneto the channel and display the channel's channel information; (4)highlight a show in the show list display 504 using the cursor buttons460-466 and press the Record button 408 on the remote control 22 to markthe selected show to be recorded; or (5) press the Cancel button 258 onthe remote control 22 to remove the channel guide display 500 from thescreen.

[0092] When the channel guide display 500 is on the screen, the user canuse buttons on the remote control 22 as follows. The Channel Up button418 and Channel Down button 420 page up and down through the channellist, respectively. If a show in the show list display 504 ishighlighted, pressing the Cursor Up button 460 and Cursor Down button462 moves the hotspot to the show directly above or directly below thehotspot's current position, respectively. If a channel in the channellist display 502 is highlighted, pressing the Cursor Up button 460 andCursor Down button 462 highlights the channel directly above or belowthe currently highlighted channel, respectively. If a show in the showlist display 504 is highlighted, pressing the Cursor Left button 464 andCursor Right button 466 moves the hotspot 506 to the show directly tothe left or to the right of the hotspot's current position,respectively. While the channel guide display 500 is on the screen, theuser can highlight a channel in the channel list display 502 directly bypressing the numerical keys 422-238 on the remote control (directtuning).

[0093] While the channel guide display 500 is on the screen, pressingthe Select button 256 on the remote control 22 performs differentfunctions depending on which element of the channel guide display 500 iscurrent highlighted. If a show that is currently being broadcasted ishighlighted, pressing the Select button 256 tunes to the show andremoves the channel guide display 500 from the screen. If a show that isnot currently being received from a live video source is highlighted, alist of options is displayed (e.g., tune to the highlighted show'schannel, record one episode of the highlighted show, record all episodesof the highlighted show). If a channel in the channel list display 502is highlighted, pressing the Select button 256 brings up the channeloptions display.

[0094] While the channel guide display 500 is on the screen, the usercan record one or more episodes of a show by highlighting an episode ofthe show using the cursor buttons 460-466 and pressing the Record button408 on the remote control 22. Pressing the Record button 408 schedules asingle episode of the show and causes a single circle to appear next tothe name of the show in the show list display 504. As shown in FIG. 5,for example, the user has selected to record a single episode of “ER”,which is indicated by a single circle 514. Pressing the Record button408 a second time schedules all upcoming episodes of the show to berecorded and causes a double circle to appear next to the name of theshow in the show list display 504. For example, referring to FIG. 5, theuser has selected to record all upcoming episodes of “The Big Help”,which is indicated by a double circle 516. Pressing the Record button408 a third time cancels scheduled recording of the show and removes thedouble circle from the show's name in the show list display. If the showthat the user selects to record conflicts in time with another show thatis scheduled to be recorded, the digital VCR 10 notifies the user of theconflict using an on-screen display. The user can then (1) view thechannel guide listing for the conflicting show; (2) record thecurrently-selected show instead of the conflicting show; or (3) cancelrecording of the selected show.

[0095] A user can create a personal channel on which to record contentreceived from the attached video sources satisfying specified recordcriteria. For example, a user might create a “Finance” personal channelwhose record criteria specify all episodes of the shows “Moneyline” and“Your Money.” The digital VCR 10 records all subsequent episodes of“Moneyline” and “Your Money” received from video sources attached to thedigital VCR 10 by comparing the record criteria to information containedin the channel guide database 326. Whenever an episode of “Moneyline” or“Your Money” airs (i.e., is received from any of the video sourcesconnected to the digital VCR 10), the digital VCR records the episode bystoring the episode's video and audio streams on the hard disk drive 142along with additional information about the episode, such as the time atwhich it aired and other information obtained from the channel guidedatabase 326.

[0096] Optionally, the digital VCR 10 can begin recording a show at aselected time (e.g., three minutes) before the show is scheduled to bebroadcast and stop recording the show at a selected time after the showis scheduled to finish broadcasting. This increases the likelihood thatan entire show will be recorded even if the digital VCR's clock is notperfectly synchronized to the broadcasting television station's clock orif the television show is broadcast a little early or a little late.When the user presses the Play button 404 to play back a show recordedin this manner, the digital VCR 10 can begin playing the show backbeginning from the point at which the show was scheduled to be recorded,rather than from the actual beginning of the recording. For example, ifa user schedules a show to be recorded from 9:00 pm through 9:30 pm, thedigital VCR 10 can record beginning at 8:57 pm and stop recording at9:33 pm. When the user presses the Play button 404 to play back theshow, the digital VCR 10 can play back the recorded video streambeginning at the point in the video stream corresponding to 9:00 pm. Theuser can then rewind or fast forward the video stream to begin playbackat the actual beginning of the show, as necessary.

[0097] By using information contained in the channel guide database 326to determine when record criteria for a personal channel are met, and byperiodically updating the channel guide database 326, the digital VCR 10can record episodes of a television show even if the show is rescheduledafter the personal channel is created. Similarly, the digital VCR canrecord episodes of a show that are aired on multiple live televisionchannels. Furthermore, the digital VCR 10 can determine (by comparingchannel guide information for a show that is scheduled to be recordedonto a personal channel with channel guide information for shows thatare already recorded on a personal channel) that a show that isscheduled to be recorded onto a personal channel is already stored onthe personal channel and/or has already been viewed by the user. In sucha case the digital VCR 10 can cancel recording of the show.

[0098] When the digital VCR 10 records a scheduled show, the digital VCRcan notify the user that the show has been recorded. For example, thedigital VCR can notify the user with an on-screen display, by sendingthe user an e-mail message (using, e.g., the modem 148), using anaudible signal (e.g., “A new show has been recorded), or by a pagermessage over a broadcast pager network.

[0099] Associated with each personal channel is a channel number in thechannel list. For example, as shown in FIG. 5, the “Finance” channel isassigned channel number 1010, and is displayed in the channel listdisplay 502 like any other channel. To watch the content that has beenrecorded on a personal channel, the user tunes to the personal channel'schannel number using the remote control 22, or selects the personalchannel's channel number in the channel list display 502. To watch aparticular episode recorded on a personal channel, the user can selectthe episode in the show list display 504 using the cursor keys 460-466.For example, when the user first tunes to the “Finance” personalchannel, the first episode recorded on the channel (i.e., the episode of“Moneyline” recorded on June 1 at 9 pm) begins playing back from thebeginning. If the user stops watching the “Finance” personal channel andsubsequently returns to the “Finance” personal channel, display beginswhere the user was last viewing.

[0100] Each personal channel has a name. The name can be specified bythe user, or can be automatically generated by the digital VCR 10. Forexample, when the user creates a personal channel, the digital VCR 10can use the name of the current show (derived from the channel guidedatabase 326) as the name of the personal channel, or the digital VCR 10can generate a name for the personal channel based on the personalchannel's record criteria.

[0101] Record criteria for a personal channel can include criteria suchas show title, keyword (e.g., actor, director), show category,description text, and rating. For example, a user can specify that allshows named “National Geographic” be recorded on a personal channel. Ashow name can be selected by entering the name of the show using real orvirtual alphanumeric keys, by selecting a show from the Channel Guidegrid, by selecting a show name from an alphabetized list of every knownshow in the channel database, or by selecting a show name from ahierarchical directory of shows. Record criteria can be combined by, forexample, using boolean operators such as “and” and “or.” An actor ordirector name can be selected using real or virtual alphanumeric keys,by selecting an actor or director name from a list of every actor ordirector in the channel database, or by selecting an actor or directorname from a movie listing in the channel guide display 500. Topics canbe selected from a list of all topics available in the channel databaseor from a hierarchical directory of topics or show categories.

[0102] Other record criteria can be specified for a personal channel.For example, the user can specify a record stack size for a personalchannel. When a new show is to be recorded on a personal channel, if thepersonal channel already contains more video content than specified bythe record stack size, the oldest show in the personal channel isreplaced with the new show to be recorded. The user can specify a recordpriority for a personal channel. When a new show is to be recorded on apersonal channel, if the hard disk drive 142 is full and a recordingwith a lower priority than the record priority exists in the personalchannel, then the lower-priority show is deleted to make room for thenew show to be recorded. Similarly, the user can specify that the oldestcontent recorded on a personal channel be deleted when necessary to makeroom for new content.

[0103] The user can specify ratings for a personal channel, such asmovie ratings or show quality ratings, in which case only shows with thespecified ratings will be recorded on the personal channel. The user canspecify that only shows which satisfy specified V-chip ratings are to berecorded on the personal channel. The system can gather v-chipinformation from the VBI signal to determine whether a show satisfiesthe selected ratings or not. The user can specify a rerun preference fora personal channel which determines which combination of new broadcasts,reruns, and syndicated re-runs of a show will be recorded on thepersonal channel. For example, the user can specify that reruns of ashow are not to be recorded. Similarly, the user can specify that onlyshows that the user has not previously viewed and/or recorded should berecorded. The digital VCR 10 can determine which shows the user haspreviously viewed by storing channel guide information for each showthat the user watches.

[0104] The channel guide information received by the digital VCR 10, orthe video streams received by the digital VCR 10, can include segmentinformation describing segments of television shows. For example,segment information for a news broadcast might indicate where each newsstory in the broadcast begins and ends, and might include descriptiveinformation (e.g., keywords) describing the content of the news stories.If the segment information for a segment matches the record criteria fora personal channel, the digital VCR 10 can record the segment onto thepersonal channel.

[0105] The user can specify the quality (in, e.g., megabits per second)at which content should be recorded on a personal channel. The user canalso specify that a particular number of episodes of a show are to berecorded on a personal channel. When a personal channel is created, theuser can be notified of the hard disk space that will be needed to storeall shows that are scheduled to be recorded on the personal channel. Ifthe amount of room needed exceeds the available space on the hard diskdrive 142, the user can be given the option of canceling creation of thepersonal channel or, for example, deleting existing content to make roomfor the personal channel.

[0106] Matches between the record criteria specified for a personalchannel and the information contained in the channel database can bemade either by requiring an exact match or on a “fuzzy match” basis. A“fuzzy match” algorithm might allow, for example, matches between wordswith similar but not identical spellings. Record criteria can becompared against closed captioning data in addition to or instead ofchannel guide information. For example, if the user includes the word“apple” as a search criterion, the digital VCR 10 can record contentwhose closed captioning data includes the word “apple.” In such asituation, the digital VCR 10 can record the entire show in which theword “apple” appears or can, for example, record a portion of the showsurrounding the occurrence of the word “apple.”

[0107] The digital VCR 10 can be manufactured or otherwisepre-configured with one or more personal channels. For example, thedigital VCR 10 can contain a pre-configured “Finance” channel forrecording all episodes of “Moneyline” and “Your Money.” The digital VCR10 can also create personal channels automatically based on demographicdata provided by the user or based on the user's viewing habits asobserved by the digital VCR 10. For example, the digital VCR 10 cancreate a personal channel for recording all sporting events occurring inthe user's geographic region based on the zip code provided by the userduring initial configuration, or from information contained in contentbroadcast (or otherwise sent) to the digital VCR 10 (e.g., in channelguide information). The digital VCR 10 can also, for example, create a“Seinfeld” personal channel if the user regularly watches and/or recordsepisodes of “Seinfeld.”

[0108] TV shows can be scheduled to be recorded in other ways. Forexample, the user can specify a show to be recorded on a personalchannel by specifying the show's start time, end time, live televisionchannel, and a recording quality. The digital VCR 10 can keep track oftelevision shows that the user watches regularly. After identifying suchshows, the digital VCR 10 can ask the user whether future episodes ofsuch shows should be recorded, or the digital VCR 10 can automaticallyschedule future episodes of such shows to be recorded on one or morepersonal channels. Similarly, the digital VCR can identify shows thatcan be of interest to the user by, for example, comparing channel guideinformation for upcoming shows to channel guide information for showsthat the user has previously watched and/or recorded.

[0109] After a show has been recorded, the user can be notified by, forexample, an on-screen message, an e-mail message, or a notificationthrough a pager network. The user can view information about shows thatare scheduled to be recorded, shows that are currently being recorded,and shows that have been recorded.

[0110] When the user tunes to a personal channel, the on-screen display508 can appear and a brief on-screen message can appear indicating thatthe show being viewed was previously recorded. After the user finisheswatching a recorded episode, the user can be presented with a visualprompt asking the user if the episode should be deleted from thepersonal channel.

[0111] When a personal channel is being viewed, the user can cause theon-screen display 508 to appear on the screen by pressing the Displaybutton 448 on the remote control 22. Pressing the Replay Guide button454 while a personal channel is being viewed brings up the channel guidedisplay 500, in which only personal channels and the content recorded onthem are displayed. The user can select an episode and press the Playbutton 404 on the remote control 22 to begin playing back the episodeeither at the beginning of the episode or at the point in the episodewhere the user previously stopped viewing. The user can select a show byhighlighting the show using the cursor keys 422-438 and pressing theselect button 456, causing a menu to appear including choices including“Delete selected episode,” “Delete all recorded episodes,” and “Deleteviewed portions of recorded episodes.” The user can select a menu choiceusing the cursor keys 422-438 and the Select button 456. On-screen menuscan also display a list of episodes that are scheduled to be recorded onthe personal channel. The personal channel can be deleted or temporarilydisabled using the on-screen menus.

[0112] The user configures the digital VCR 10 before its first use. Thefirst part of configuration includes physically connecting all desiredvideo and audio sources to the digital VCR's video and audio inputs, andconnecting the digital VCR's video and audio outputs to a video andaudio output devices such as the television 18 and speakers. It can benecessary to configure the remote control 22 to work properly withdevices that are connected to the digital VCR 10. Users can also enteradditional information such as their zip code, time zone, area code, andcable TV or DBS provider. After the user has entered all necessaryinformation, the digital VCR 10 can scan all channels from connectedlive video sources and generate the channel list, discarding channelsthat do not contain a usable signal. The channel list can includechannels representing recorded video sources, such as the VCR 15.

[0113] An initial channel guide database 326 can be generated bydownloading channel guide information into the digital VCR 10 using themodem 148, cable TV cable 12, or some other means. Channel guideinformation can be downloaded only for those channels which the userreceives. For example, if the user only subscribes to channels 1-20 froma cable television provider, the digital VCR 10 can download channelguide information from the cable service provider only for channels1-20, rather than for the entire set of channels provided by the cableservice provider. Subsequently, the channel guide database 326 canperiodically be updated by the digital VCR 10 by downloading updatedchannel guide information. The user can specify times at which thechannel guide database 326 is to be updated.

[0114] An internal clock within the digital VCR 10 can be set to thecurrent time manually, or the internal clock can be set automaticallyusing, for example, information contained within downloaded channelguide information. As part of initial configuration, the digital VCR 10can display a tutorial video contained on the hard disk drive 142containing usage instructions. The tutorial video can be displayedautomatically the first time the digital VCR 10 is configured. Thetutorial video can be deleted after being watched by the user, eitherautomatically or in response to user instruction.

[0115] The user can optionally perform additional configuration. Forexample, after an initial channel list has been generated, the user canmodify the association of channel numbers in the channel list withchannels received from the connected live video sources. For example,the user can specify that channel 1 in the channel list is to beassociated with channel 7 from a connected television antenna and thatchannel 2 in the channel list is to be associated with channel 23 from aconnected cable TV cable. In this way, the user can, for example, placethe most frequently-used channels together at the beginning of thechannel list. The user can add or delete channels from the channel list.

[0116] The user can block access to specified channels using a specifiedpassword in order to prevent children from watching inappropriatechannels, for example. Blocked channels are skipped when accessedsequentially, but cause an on-screen message (e.g., “This channel isblocked: Please enter password.”) to be displayed if the blocked channelis tuned to directly.

[0117] As described in more detail below, the digital VCR 10 alwaysspools the current show to a rewind buffer that is stored on the harddisk 142. The user can configure the length of the rewind buffer, whichcan be, for example, 15 minutes long by default. The user can specifydefault recording qualities with which shows are to be recorded into therewind buffer and into personal channels.

[0118] The user can watch live television using the digital VCR 10 bytuning to a live television channel using the remote control 22. Forexample, the user can tune directly to a live television channel byentering the channel number using numeric keys 422-238 on the remotecontrol 22, by using Channel Up button 418 and Channel Down button 420on the remote control 22, or by selecting a channel in the channel guidedisplay 500. The digital VCR 10 continuously spools the current show'svideo and audio streams to a rewind buffer stored on the hard disk drive142. The current show is spooled to the rewind buffer even if the useris not watching the current show, such as when the user is watching aVHS tape. The digital VCR 10 can have a second tuner in addition to thetuner 108, in which case one live television channel (referred to as aprimary channel) can be spooled to the rewind buffer while the userwatches a secondary live television channel. Similarly, if channel guideinformation is broadcast on the VBI of a single television channel,channel guide information can be received on one television channelwhile the user is viewing another live television channel.

[0119] Whenever the user tunes to a channel by, for example, pressingthe Channel Up button 418 or Channel Down button 420 on the remotecontrol 22, the channel number and station description or channel nameare displayed transparently over the channel's video stream. Thestation's call letters can be retrieved from the VBI Extended DataService (XDS or EDS) information or from the channel guide database 326.Show information, such as the name of the show being viewed and theamount of time left, can also be displayed. The on-screen display canlast for a few seconds and then be removed. If the channel is beingrecorded, the channel's underlying video and audio streams are recordedwithout the transparent station description and/or channel name.Similarly, other transparent displays described herein (e.g., thechannel guide display 500) are not recorded even when the video overwhich they are displayed is recorded. However, the information itself istypically recorded along with the video stream for database storage andsubsequent retrieval and display.

[0120] Whenever the user is watching any channel, the digital VCR 10 isin one of several “interface states” that define what options the userhas. The current interface state depends on what type of channel isbeing viewed and on whether the system is recording a personal channel.The name of the current interface state can be displayed transparentlyover the currently playing video stream for a few seconds whenever thecurrent interface state changes. The interface states include:

[0121] Live: a live television channel is being displayed and beingrecorded into the rewind buffer.

[0122] Delayed: part of a recorded show is playing back from the rewindbuffer while the remainder of the show is being recorded.

[0123] Personal: a pre-recorded personal channel is playing back fromstorage.

[0124] Recording: a channel is being viewed while being recorded forsubsequent or simultaneous playback.

[0125] Non-viewable: the selected channel cannot be displayed.

[0126] Information: a non-video channel designed to present information,advertising, or web-style menus.

[0127] Referring to FIGS. 6A-F, transitions between interface statesoccur as follows. Referring to FIG. 6A, when the user tunes to a livetelevision channel while no channel is being recorded onto a personalchannel (step 602), the interface state becomes Live 600 a. When theinterface state is Live, the show being displayed on the current channelis recorded into the rewind buffer. During the Live interface state, theuser can use the Channel Up button 418 and Channel Down button 420 onthe remote control 22 to change the current channel, and can tunedirectly to a channel by entering the channel number using the numerickeys 422-238 on the remote control 22. If the user tunes to a personalchannel (step 606), the personal channel is displayed and the interfacestate becomes Personal 600 c. If the user tunes to an informationchannel (step 610), the information channel is displayed and theinterface state becomes Information 600 e. If the user tunes to anon-viewable channel (step 612), a message is displayed on-screennotifying the user that the channel is non-viewable and the interfacestate becomes Non-Viewable 600 f.

[0128] Pressing the Record button 408 on the remote control 22 duringthe Live interface state (step 608) can cause the digital VCR 10 todisplay an on-screen menu from which the user can choose to recordeither the current episode of the current show or all episodes of thecurrent show.

[0129] Alternatively, for example, pressing the Record button 408 duringthe Live interface state can cause the digital VCR 10 to begin recordingthe current show, and pressing the Record button 408 again can cause thedigital VCR 10 to schedule recording of all upcoming episodes of thecurrent show. In any case, after pressing the Record button 408, thedigital VCR 10 (1) assigns a personal channel to the current channel;(2) saves the data that has been recorded in the rewind buffer, so thatthe entire show being viewed on the current channel can be recorded, and(3) changes the interface state to Recording 600 d. The digital VCR 10can ask the user whether to record a single episode of the current showor all future episodes of the current show. If all future episodes ofthe current show are to be recorded, the digital VCR 10 can schedulerecording of future shows by, for example, using the channel guidedatabase 326 to determine which show is currently being broadcast andthen scheduling future episodes of the same show to be recorded.

[0130] Pressing the Rewind button 402 on the remote control 22 duringthe Live interface state (step 604): (1) rewinds the video that has beenrecorded in the rewind buffer, while the current show continues to berecorded into the rewind buffer, and (2) changes the interface state toDelayed 600 b. Pressing the Rewind button 402 again or the Play button404 initiates delayed playback of the content stored in the rewindbuffer. Pressing the Pause button 402 on the remote control 22 duringthe Live interface state (step 604) causes the currently displayed frameto be frozen on-screen while the current show continues to be recordedinto the rewind buffer, and changes the interface state to Delayed 600b.

[0131] Referring to FIG. 6B, when the interface state is Delayed, thecurrent show continues to be recorded into the rewind buffer. When theinterface state is Delayed, the user can attempt to change channelsusing the Channel Up button 418 or the Channel Down button 420 on theremote control 22. If the user attempts to tune to a live televisionchannel and the digital VCR 10 has only one tuner, the user can bepresented with a message saying that a delayed show is being viewed andinstructing the user that the Live TV button 412 must be pressed tochange to the Live interface state in order to change channels.Alternatively, if the user attempts to tune to a live television channeland the digital VCR 10 has only one tuner (step 616), the digital VCR 10can display the channel number onscreen and change the interface stateto Non-Viewable. If the user tunes to a personal channel (step 618), theselected personal channel can become the current channel and theinterface state becomes Personal. If the user presses the Rewind or FastForward button 406 during the Delayed interface state, the delayed videowill be rewound or fast forwarded, respectively. If the user presses thePause button 410 during the Delayed interface state, the delayed videobeing displayed is paused. If the user presses the Play button 404during the Delayed interface state while the delayed video is paused,the delayed video will resume playing at the point at which the videowas paused. In the latter case, the video can resume playing at normalspeed, or at an increased rate in order to let the user “catch up” withthe content currently being broadcast. If the user presses the Live TV(Stop) button 412 during the Delayed interface state (step 620), thecurrent show will be displayed at the current time, and the interfacestate becomes Live. Pressing the Record button 408 during the Delayedinterface state (step 622) causes the Rewind buffer to be saved and theinterface state to become Recording. The user can record a singleepisode or all episodes of the current show as described above.

[0132] Referring to FIG. 6C, when the user is playing back a show thathas been completely recorded on a personal channel, the interface stateis Personal. This differs from the Recording interface state, whichcorresponds to watching a show that is still in the process of beingrecorded. When the interface state is Personal, the digital VCR 10 caneither be recording a show from any channel or not recording. When theinterface state is Personal, the user can tune to another channel usingthe Channel Up button 418 and Channel Down buttons 420 or by directlytuning to a channel using the numeric keys 422-438. If the currentchannel is changed from a personal channel while a live televisionprogram is being viewed and being recorded onto the personal channel,the current position of the live television program is stored for futureuse while the program continues to be recorded onto the personalchannel. This allows the user to return to the personal channel andcontinue watching the television program from the point where the userleft off. If, while in the Personal interface state, the user tunes toanother personal channel (step 624), the interface state remainsPersonal. If the user tunes to a live television channel (step 626), theinterface state becomes Live. If the user tunes to an InformationChannel (step 628), the interface state becomes Information.

[0133] Pressing the Rewind button 402, Fast Forward button 406, or Pausebutton 410 while in the Personal interface state causes the personalchannel being viewed to rewind, fast forward, or pause, respectively. Ifthe Play button 404 is pressed while the personal channel is paused, thepersonal channel continues playing from the point at which it waspaused. If the Play button 404 is pressed while the personal channel isplaying, the replay guide is displayed. If the Live TV (Stop) button 412is pressed while in the Personal interface state 600 c and the digitalVCR 10 is not recording a personal channel (step 630), the digital VCR10 tunes to the last viewed live television channel, and the interfacestate becomes Live. If the Live TV (Stop) button 412 is pressed duringthe Personal interface state and the digital VCR 10 is recording apersonal channel (step 632), the digital VCR 10 tunes to the channelthat is being recorded, and the interface state becomes Recording.

[0134] Referring to FIG. 6D, when the digital VCR 10 is recording a showthat the user has specifically requested to be recorded (in contrast torecording a show into the rewind buffer), the interface state isRecording. If the digital VCR 10 finishes recording the show while inthe Recording interface state (step 634), the interface state changes toLive. If the user presses the Channel Up button 418 or Channel Downbutton 420 while in the Recording interface state, the current channelchanges to the next or the previous viewable channel. While in theRecording interface state, a live television channel cannot be viewed ifthe digital VCR 10 has only one tuner. Therefore, while in the Recordinginterface state, live television channels can not be viewable. Pressingthe Channel Up button 418 or Channel Down button 420 can therefore skipunviewable channels and display the next or previous viewable channel,respectively. Alternatively, if the user tunes to a non-viewable channelwhile in the Recording interface state (step 636), the digital VCR 10can display the channel number of the non-viewable channel on-screen andchange the interface state to Non-Viewable.

[0135] If the user tunes to a personal channel while in the Recordinginterface state (step 638), the interface state becomes Personal. If theuser tunes to an information channel while in the Recording interfacestate (step 640), the interface state becomes Information.

[0136] Pressing the Rewind, Fast Forward, and Pause keys while in theRecording interface state perform rewind, fast forward, and pausefunctions, respectively.

[0137] If the user presses the Play button 404 during the Recordinginterface state and the current channel is paused, the current channelwill resume playing. If the user presses the Live TV (Stop) button 412during the Recording interface state (step 642), the current channelwill be displayed at the current time and the interface state willbecome Live, allowing the user to watch live television.

[0138] The digital VCR 10 can reserve one or more channels, referred toas “information channels,” for displaying information to the user. Forexample, an information channel can display an advertisement, notice, ore-mail to the user. Referring to FIG. 6E, when an information channel isbeing displayed, the interface state is Information. If the user tunesto an information channel while in the Information interface state (step642), the interface state remains Information. If the user tunes to apersonal channel while in the Information interface state (step 644),the digital VCR 10 tunes to the personal channel and the interface statebecomes Personal. If the user tunes to a viewable live televisionchannel while in the Information interface state (step 646), the digitalVCR 10 tunes to the live television channel and the interface statebecomes Live. If the user tunes to a non-viewable channel while in theInformation interface state (step 648), the interface state becomesNon-Viewable.

[0139] Referring to FIG. 6F, if the user tunes to a channel that cannotbe displayed for any of a number of reasons, the interface state becomesNon-Viewable. For example, if the digital VCR 10 has only one tuner, andthe user tunes to a live television channel while another channel isbeing recorded, the interface state becomes Non-Viewable. When in theNon-Viewable interface state, the channel guide information for thenon-viewable channel can be displayed on the on-screen display 508against a dark background along with a message telling the user why thecurrent channel cannot be viewed. Alternatively, if the user attempts totune to a channel that is non-viewable because another channel is beingrecorded, the digital VCR 10 can provide the user with the option ofcanceling the recording of the channel that is being recorded.

[0140] If the user presses the Channel Up button 418 or Channel Downbutton 420 while in the Non-Viewable interface state, the currentchannel will be changed to the next or previous viewable channel,respectively. If the user tunes to a personal channel while in theNon-Viewable interface state (step 650), the digital VCR 10 tunes to thepersonal channel and the interface state becomes Personal. If the usertunes to an information channel while in the Non-Viewable interfacestate (step 652), the digital VCR 10 displays the information channeland the interface state becomes Information. If the user tunes to anon-viewable channel while in the Non-Viewable interface state (step654), the interface state remains Non-Viewable. If the user tunes to aviewable live television channel while in the Non-Viewable interfacestate (step 656), the digital VCR 10 tunes to the live televisionchannel and the interface state becomes Live. If the user presses thePlay button 404 while the interface state is Non-Viewable, the replayguide is displayed.

[0141] If the user presses the Channel Up button 418 or Channel Downbutton 420 while in the Play Menu interface state, a graphical showselector is moved up or down, respectively, allowing the user to selecta personal channel to watch. The Cursor Up button 460 and Cursor Downbutton 462 perform the same functions as the Channel Up button 418 andChannel Down button 420, respectively. The Select button 256 chooses theselected personal channel as the current channel and begins playing thepersonal channel.

[0142] If the digital VCR 10 has two tuners, the user can designate achannel to be a “primary channel.” If, for example, the user is watchinga channel that has been designated as a primary channel, the content ofthe channel is spooled to the rewind buffer. If the user tunes toanother channel, the contents of the primary channel continue to bespooled to the rewind buffer. The channel to which the user tunes can bespooled to a second rewind buffer. When the user returns to the primarychannel, the user can resume watching the primary channel at the pointwhere the user left off or at the current time. In the latter case theuser can rewind the primary channel in order to view portions of theprimary channel content that were received while the user was watchingother channels. Furthermore, if the user is viewing a channel other thanthe primary channel, the digital VCR 10 can notify the user when the endof a commercial or the end of a series of commercials have been detectedon the primary channel.

[0143] The techniques described above can be implemented inspecial-purpose circuitry, general-purpose circuitry (such asprogrammable microprocessors) operating under the control of programinstructions, or in any combination of such apparatus. However, thetechniques are not limited to any particular circuitry or programconfiguration; they can find applicability in any computing orprocessing environment that can be used for digital recording andplayback of video and audio streams. The techniques can be implementedin computer programs executing on programmable circuitry that caninclude a processor, a storage medium readable by the processor(including volatile or non-volatile memory and/or storage elements), oneor more input device, and one or more output devices. Program code canbe applied to data entered using the input device to perform thefunctions described and to generate output information. The outputinformation can be applied to the one or more output devices.

[0144] Each program described above can be implemented in a high levelprocedural or object oriented programming language to communicate with acomputer system. However, the programs can be implemented in assembly ormachine language, if desired. In any case, the language can be acompiled or interpreted language.

[0145] Each such program can be stored on a storage medium or device(e.g., DVD, CD-ROM, hard disk or magnetic diskette) that is readable bya general or special purpose programmable computer for configuring andoperating the computer when the storage medium or device is read by thecomputer to perform the procedures described in this document. Thesystem can also be considered to be implemented as a computer-readablestorage medium, configured with a computer program, where the storagemedium so configured causes a computer to operate in a specific andpredefined manner.

[0146] The present invention has been described in terms of anembodiment. The invention, however, is not limited to the embodimentdepicted and described. Rather, the scope of the invention is defined bythe claims.

[0147] Other embodiments are within the scope of the claims. Forexample, the digital VCR 10 can have one or more tuners in addition tothe tuner 108. Such additional tuners can allow the user to, forexample, watch one live television channel while another live televisionchannel is being recorded. The digital VCR 10 can receive audio and/orvideo in digital form. Any digital audio or video received by thedigital VCR 10 need not be digitized by the decoder 109 or the codec124. Video can be received in NTSC, PAL, HDTV, or any other broadcaststandard format. The digital VCR 10 can display video output on ahigh-definition television (HDTV). If the digital VCR 10 displays outputon an HDTV or another digital video output device, the digital VCR 10need not be converted into analog form before being output. Channelguide information can be received by, for example, the modem 148 or fromthe VBI. Video can be output in component video format. Digital audiocan be output in formats other than SPDIF. The digital VCR 10 caninclude a DBS tuner to allow the digital VCR to perform the functions ofa DBS receiver.

What is claimed is:
 1. An apparatus for storing video informationcomprising: a means for receiving video information; a means forconverting the received video information into digital videoinformation; and a means for storing the digital video information. 2.The apparatus of claim 1 wherein the means for converting the receivedvideo information into digital video information further comprises anMPEG-compatible digital encoder.
 3. The apparatus of claim 2 wherein theMPEG-compatible digital encoder further comprises separate audio andvideo MPEG encoders.
 4. The apparatus of claim 2 wherein the means forstoring the digital video information further comprises: anelectromagnetically writable disk drive; and an optimized MPEG filesystem (OMFS), the OMFS configured to receive the digital videoinformation and store the digital video information on the disk drive.5. The apparatus of claim 4 wherein: the disk drive further comprisesone or more electromagnetic disks, each electromagnetic disk dividedinto one or more sectors having a fixed number of bytes storable on eachsector; and the OMFS is configured to divide the received digital videoinformation into one or more packets, each packet having the same numberof bytes as a sector on a disk in the disk drive.
 6. The apparatus ofclaim 5 wherein the OMFS first accumulates one of the packets of digitalvideo information in a cache memory.
 7. The apparatus of claim 6 whereinthe OMFS, upon filling the cache memory with a completed packet ofdigital video information, then stores the completed packet on a singleone of the sectors of the disk drive.
 8. The apparatus of claim 2wherein the means for converting the received video information intodigital video information further comprises an MPEG-compatible softwareencoder streamer which couples to the MPEG-compatible digital encoder toconvert the received video information.
 9. The apparatus of claim 1further comprising a means for reading the stored the digital videoinformation.
 10. The apparatus of claim 9 wherein the means for readingfurther comprises an MPEG-compatible digital decoder.
 11. The apparatusof claim 10 wherein the MPEG-compatible digital decoder furthercomprises separate audio and video MPEG decoders.
 12. The apparatus ofclaim 10 wherein the means for reading further comprises anMPEG-compatible software decoder streamer which couples to theMPEG-compatible digital decoder to convert the stored digital videoinformation into video information suitable for being displayed on atelevision monitor.
 13. The apparatus of claim 4 wherein the OMFS isconfigured to defragment the disk drive periodically.
 14. The apparatusof claim 4 wherein the OMFS is configured to determine periodically poorsectors on the disk drive and prevent writing to the poor sectors.
 15. Amethod for storing video information comprising the steps of: a step forreceiving video information; a step for converting the received videoinformation into digital video information; and a step for storing thedigital video information.
 16. The method of claim 15 wherein the stepfor converting the received video information into digital videoinformation further comprises encoding the received video informationinto an MPEG-compatible format.
 17. The method of claim 16 wherein thestep for converting further comprises the steps of converting the audioinformation and the video information separately in MPEG-compatibleformats.
 18. The method of claim 16 wherein the digital videoinformation is stored using an optimized MPEG file system (OMFS), theOMFS receiving the digital video information and storing the digitalvideo information on an electromagnetically writable disk drive.
 19. Themethod of claim 18 wherein the disk drive further comprises one or moreelectromagnetic disks, each electromagnetic disk divided into one ormore sectors having a fixed number of bytes storable on each sector; andthe OMFS divides the received digital video information into one or morepackets, each packet having the same number of bytes as a sector on adisk in the disk drive.
 20. The method of claim 19 wherein the OMFSfirst accumulates one of the packets of digital video information in acache memory.
 21. The method of claim 20 wherein the OMFS, upon fillingthe cache memory with a completed packet of digital video information,then stores the completed packet on a single one of the sectors of thedisk drive.
 22. The method of claim 16 wherein the step for convertingthe received video information into digital video information furthercomprises using an MPEG-compatible software encoder streamer coupled toan MPEG-compatible digital encoder to convert the received videoinformation.
 23. The method of claim 15 further comprising the step forreading the stored the digital video information.
 24. The method ofclaim 23 wherein the step for reading further comprises using anMPEG-compatible digital decoder to decode the stored digital videoinformation.
 25. The method of claim 24 wherein step for reading furthercomprises separately decoding audio and video signals using separateMPEG-compatible audio and video decoders.
 26. The method of claim 24wherein the step for reading further comprises using an MPEG-compatiblesoftware decoder streamer coupled to an MPEG-compatible digital decoderto convert the stored digital video information into video informationsuitable for being displayed on a television monitor.